此文同步載於 http://www.dotblogs.com.tw/holmes2136/Default.aspx
有時候在 Webservice 上的一些方法需要採用 overload 的方式來增加
程式的維護姓 , 而這也是 OO 向來的寫法 , 可是對於 Webservice 而言必須
有個唯一的名稱 , 例如當我們在一個服務下建立相同名稱卻不同參數的方法
會馬上遭遇到下列問題 :
但是在 .Net 提供使用 MessageName 屬性來 overload 方法 ,
可是這時候會遭遇到另外一個問題 , 如下圖 :
這時我們可以注意到在我們的 webservice 建立之初都會增加下列字串 ,
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
這表示我們的服務必須符合 Web Services Interopability
Organization's (WS-I) Baisc Profile 1.1 的規範 ,
這個規範定義了一堆必須遵守的規則 , 為了解決這個問題 ,
我們可以將上述修改如下 :
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
如此一來將不會再發生上述的問題 , 但是可議的是 , 雖然在 .Net
你可以做到 , 但是並不被鼓勵 , 詳情可見 W3C 組織對這個議題的討論http://www.w3.org/TR/wsdl20/#names-of-elements-within-an-operation
( section 3-6 )
而在 MSDN 也有文章提到 , 可見網址
http://msdn.microsoft.com/en-us/magazine/cc188906.aspx
參考資料 :
WSDL, Web Services, and More
http://msdn.microsoft.com/en-us/magazine/cc188906.aspx
Method overloading in webservices
http://stackoverflow.com/questions/5689033/method-overloading-in-webservices